package mapper;

import org.apache.ibatis.annotations.Param;
import pojos.student.OrderSubjectInfo;
import pojos.student.OrderSubjectManager;
import pojos.student.StudentInfo;
import pojos.subject.ClassInfoManager;
import pojos.subject.UserRelationshipManager;

import java.util.List;

/**
 * 学生信息查询接口
 */
public interface StudentMapper {

    /**
     * 查询学生基本信息
     */
    List<StudentInfo> queryAllStudentBaseInfo()throws Exception;

    /**
     * 查询登录名是否存在
     */
    Integer isLoginNameExist(String name)throws Exception;

    /**
     * 添加学生信息
     */
    void addStudent(StudentInfo studentInfo) throws Exception;

    /**
     * 查询所有学生姓名
     */
    List<StudentInfo> queryAllStudentsName() throws Exception;

    /**
     * 查询学生订购课程信息
     */
    List<OrderSubjectManager> queryStudentOrderSubjectInfo() throws Exception;

    /**
     * 添加学生课程订购信息
     */
    void addStudentOrderSubject(OrderSubjectInfo orderSubjectInfo) throws Exception;

    /**
     * 生成学生关系
     */
    void addStudentRelationship(UserRelationshipManager userRelationshipManager) throws Exception;

    /**
     * 学生登录检查
     */
    StudentInfo studentLoginCheck(String name) throws Exception;

    /**
     * 学生账号密码错误次数自动加1
     */
    void updateDayError(int id) throws Exception;

    /**
     * 系统锁定学生账户
     */
    void sysLockStudent(int id) throws Exception;

    /**
     * 系统锁定自动解锁
     */
    void sysAutoUnLock(int id) throws Exception;

    /**
     * 更新学生基础信息
     */
    void updateStudentBaseInfo(StudentInfo studentInfo) throws Exception;

    /**
     * 修改学生登录名
     */
    void updateStudentLoginName(StudentInfo studentInfo) throws Exception;

    /**
     * 查询学生密码
     */
    String queryStudentPassword(int id) throws Exception;

    /**
     * 修改学生密码
     */
    void updateStudentPassword(@Param("id") int id, @Param("password") String password) throws Exception;

    /**
     * 修改学生手机号
     */
    void updateStudentPhone(StudentInfo studentInfo) throws Exception;

    /**
     * 修改学生QQ号和微信号
     */
    void updateStudentConnect(StudentInfo studentInfo) throws Exception;

    /**
     * 查找学生手机号
     */
    StudentInfo queryStudentPhone(String name) throws Exception;

    /**
     * 查询学生当天课程信息
     */
    List<ClassInfoManager> queryCurrentClassInfo(int studentId) throws Exception;
}